#!/usr/bin/env bash
set -euo pipefail

echo "==== 备份本地关键目录 ===="
# 如果目录不存在也没关系，加 || true 防止报错
tar czf ~/jsonBlog-local-backup-$(date +%Y%m%d-%H%M%S).tgz ./static/img ./static/config ./static/md || true

echo "==== 保存当前工作区 ===="
git stash push -m "pre-sync stash" || true

echo "==== 获取远端最新历史 ===="
git fetch origin

echo "==== 合并远端 master（默认用 theirs，冲突时优先远端） ===="
# --no-commit 让我们有机会再改
git merge -s recursive -X theirs --no-commit origin/master || {
    # 如果 Git 报告冲突，先自动用本地版本解决指定文件/目录
    git checkout HEAD -- ./static/img ./static/config ./static/md 
    git add ./static/img ./static/config ./static/md 
}

echo "==== 把指定目录强行换回本地版本（双重保险） ===="
git checkout HEAD -- ./static/img ./static/config ./static/md 
git add ./static/img ./static/config ./static/md 

echo "==== 完成合并并提交 ===="
git add .
git commit -m "sync: keep local img/config/md/2.html, take remote for others"

echo "==== 恢复之前 stash 的内容（如果有） ===="
git stash pop || true

echo "==== 设置权限 ===="
chmod -R 777 ./

echo "==== 同步完成！ ===="